/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package model.dao.chitietpdt;

import java.util.List;
import model.dao.AbstractQuery;
import model.dao.ProjectQuery;
import model.dao.addxuonghibernate.PhieuDieuTriDAO;
import model.dao.thuoc.ThuocDAO;
import model.entity.ChiTietPdt;
import model.entity.ChiTietPdtId;
import model.util.HibernateUtil;
import org.hibernate.HibernateException;
import org.hibernate.Session;

/**
 *
 * @author luanp_000
 */
public class ChiTietPdtDAO {

    /**
     * Load tất cả chi tiết phiếu điều trị vào 1 List
     *
     * @return List danh sách tất cả các chi tiết phiếu điều trị. Mỗi 1 đối tượng trong List
     * trả về là 1 dòng (row) trong database.
     */
    public static final List loaddAllChiTietPdt() {
        return AbstractQuery.loadObject(ProjectQuery.LOAD_ALL_CTPDT);
    }

    public static final ChiTietPdt load1ChiTietPdt(int pdtMa) {
        List list = AbstractQuery.loadObject(ProjectQuery.LOAD_1_CTPDT + pdtMa);
        return (ChiTietPdt) list.get(0);
    }

    /** CHƯA XONG
     * Thêm mới 1 chi tiết phiếu điều trị
     *
     * @param ctpdt đối tượng chi tiết phiếu điều trị cần thêm
     */
    public final static void insertChiTietPdt(ChiTietPdt ctpdt) {
//        AbstractQuery.insertObject(ctpdt.getPhieuDieuTri());
//        AbstractQuery.insertObject(ctpdt.getThuoc());
//        AbstractQuery.insertObject(ctpdt);
        Session session = HibernateUtil.getSessionFactory().openSession();
        int id ;
//        int id1;
        session.beginTransaction();
            
        try {
            PhieuDieuTriDAO.insertPhieuDieuTri(ctpdt.getPhieuDieuTri());
            ThuocDAO.insert(ctpdt.getThuoc());
            session.beginTransaction();
            session.save(ctpdt);
            
//            id = ctpdt.getId().getPdtMa();
//            id1= ctpdt.getId().getThuocMa();
            session.getTransaction().commit();
        } catch (HibernateException e) {
            session.getTransaction().rollback();
            throw new HibernateException(e);
        }finally{
            session.close();
        }
//        return  id;
        
    }

    /**
     * Sửa thông tin 1 chi tiết phiếu điều trị.
     *
     * @param ctpdt đối tượng chi tiết phiếu điều trị sẽ được sửa thông tin.
     */
    public static final void updateChiTietPdt(ChiTietPdt ctpdt) {
        AbstractQuery.updateObject(ctpdt);
    }

    /**
     * Xóa 1 chi tiết phiếu điều trị.
     *
     * @param pdtMa mã đối tượng chi tiết phiếu điều trị sẽ bị xóa.
     */
    public static final void deleteChiTietPdt(int pdtMa) {
        AbstractQuery.modifyObject(3, (ChiTietPdt) AbstractQuery.loadObject(ProjectQuery.LOAD_1_CTPDT + pdtMa).get(0));
    }
}
